package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * IO : Input 和 Output ，即输入与输出
 * Java 将输入和输出用“流 Stream”表达，分为输入流和输出流
 * 我们可以将他们想象为连接我们程序和另一个设备之间的“管道”，通过他们可以读写设备
 * Java将输入流和输出流定义了两个对用的超类InputStream和OutputStream：
 * 1.InputStream
 *   输入流，方向是从外界到程序的方向，用于读取数据的流，是一个抽象类，定义了读取字节的相关方法
 * 2.OutputStream
 *   输出流，方向是从程序到外界的方向，用于书写数据的流，是一个抽象类，定义了书写字节的相关方法
 *
 * 文件流：FileInputStream和FileOutputStream
 *   文件流继承自InputStream和OutputStream，用于对文字进行读写操作
 * */
public class FOSDemo {
    public static void main(String[] args) throws IOException {

        /*
        文件输出流两个常用的构造器
        1.FileOutputStream(String fileName)
        2.FileOutputStream(File file)
        文件流创建时如果指定的文件不存在则会自动创建，前提是该文件所在的目录必须存在，若不存在则会发生异常
         */

         File file = new File("fos.dat");
         FileOutputStream fos = new FileOutputStream(file);//根据File实例定义文件输出流
        //FileOutputStream fos = new FileOutputStream(file,true);文件追加
        //FileOutputStream fos = new FileOutputStream("fos.dat"); //同上代码 定义文件输出流

        fos.write(1);//向fos.dat中写入了1个字节
        fos.write(2);//向fos.dat中又写入了2个字节
        fos.write(257);
        System.out.println("书写完成");
        fos.close();//关闭流
    }
}
